<html>
<head>
<meta name="keywords" content="finance,accounting,qfx,csv,excel,xls,directnet,citi,fx,tase,translator,converter" />
<title>pyfm - python free financial bank statement management: import, export, consolidation, retrieval</title>
</head>
<body>
<h1>pyfm</h1>
Open source and free software for managing financial bank statements.
Allows you to import statements, and other data, from various sources,
consolidation the information into a model, search the data and model, and finally generate reports or export  the model to other financial tools.

<h2>The problem and its solution</h2>
<p>
Want to store all your financial data in digital form? Download statements where you can, scan letters (OCR them if it works), or just type transcripts of phone calls.
But now what? How do you manage this torrent?
Running a search on all the data does not always work: each document has its own structure and idiosyncrasies, some download formats are not directly readable, the same securities are represented differently, different currency and date formats are used and even numerical values are displayed differently.
This becomes more severe when working with multiple banks and countries.
</p>
<p>
A deeper problem is trying to understand what all that information is trying to tell you.
Representing the 'truth' in a spreadsheet has its problems.
How do you retrieve documents from your digital archive that contributed to each element of the spreadsheet?
What if you wanted to re-build the spreadsheet into a different structure: because of better understanding,
change in tax laws or just because you don't remember what exactly the old tables where saying.
What can you do if several statements are in conflict, and in general,
what should you do if the spreadsheet approach is simply inappropriate and you end with too many notes and comments scattered around
that no spreadsheet formula (or human) can comprehend?
</p>
<p>
Accounting software applications, like gnucash, has the same limitations, while commercial software, like MS Money and Quicken, are in addition closed and as a result it is hard to follow how exactly they model the information entered;
hard to work with multiple countries (currency, tax-law, languages and bank conventions);
or find a way to implement any feature not taken into consideration in the design of these products.
</p>
<p>
The project suggests a concept on how to deal with this problem and software to support it. 
Every line in every incoming statement is stored in an intermidate format (flat-line) that is the equivalent of putting evidence into a plastic bag and entering a description of its content by a Crime Scene Investigator.
The collection itself can be done by hand or by simple import software (less seasoned detectives) without dealing with its meaning.
As a second independent stage, you can define the structure of your 'spreadsheet' and let the software build its tables out of the intermidate data,
this would be the equivalent of writing a diagram relating all the suspects on a white board.
In the process of modeling, some of the intermidate data may be left out, but not lost.
Later on you can change your mind about the structure and re-build the tables, this can give a chance to some of the previously ignored data.
When re-building you don't have to repeat the entry step done on past statements, as a result, the originals can be stored in a safe place, never to be touched again.
However, if necessary (on day of court), retrieving them becomes easier:
your model relates to the intermidate data (the description entered for every plastic bag) and from
it it's easy to jump back to the original document (the bag content.)
</p>
<h2>Features</h2>
<ul>
<li>Import downloaded statements from:</li>
<ul>
<li>OFX version 1 or 2 files marked as files for MS-Money or Quicken (credit-cards, checking and investment)</li>
<li>Direct-Net (checking)</li>
<li>Citibank Investment Services (portfolio-position)</li>
<li>Bank Leumi LeIsrael (checking, portfolio-position and activity)</li>
</ul>
</li>
<li>On-line download of historical quote information from Yahoo, Oanda (FX), Tel-Aviv Stock Exchange and Bank of Israel (ILS exchange rates)
</li>
<li>Automatic 'table' building from imported data</li>
<ul>
<li>Open-source: allows you to modify the structure of the 'tables'</li></li>
</ul>
</li>
<li>Query, diagnostic, consolidation and reporting tools
</li>
<li>Export to external software (MS-Money or Quicken) and by that add missing functionality:</li>
<ul>
<li>Be able to retrieve original documents.</li>
<li>Importing from more sources.</li>
<li>Retrieving on-line quotes from unsupported sites.</li>
<li>Have full control over the handling of some aspects, for example:</li>
<ul>
<li>Conflicts</li>
<li>Currency</li>
<li>Languages translation</li>
</ul>
<li>Streamlining the usage of the external software by cleaning and simplifying the data.</li>
<li>Removing sensitive but non essential information (e.g., accounts, owners, banks) before passing data to a financial planner.</li>
</ul>
</ul>

Read more in the project's  <a href="http://benreuven.com/udiwiki/index.php?title=Pyfm">wiki</a>

<p>
Copyright (c) 2007 Ehud Ben-Reuven. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
</p>
</body>
</html> 
